#include "cpu/exec/template-start.h"

#define instr test

static void do_execute() {
    DATA_TYPE result = op_dest->val & op_src->val;
	cpu.eflags.OF=0;
	cpu.eflags.CF=0;
	update_eflags_pf_zf_sf(result);
	cpu.eflags.SF = result >> (DATA_BYTE*8 -1);                // = 结果的符号位
    cpu.eflags.ZF = !result;                                   // 结果==0 为1
    int qwq = 0;
    int i;
    for(i = 0; i < 8; i++) qwq += (result >> i) & 1;// 结果的最低有效字节包含偶数个1 为1
    if(qwq % 2) cpu.eflags.PF = 0;
    else cpu.eflags.PF = 1;
	//update_eflags_pf_zf_sf(result);
    print_asm_template2();
}

// static void do_execute(){
//     DATA_TYPE res = op_src -> val & op_dest -> val;
//     //printf("%d %d\n",op_src->val,op_dest->val);
//     cpu.eflags.ZF = !res;
//     //cpu.eflags.SF = MSB(res);
//     cpu.eflags.SF = res >> (DATA_BYTE*8 -1);
//     cpu.eflags.CF = cpu.eflags.OF = 0;

//     // res &= res >> 16;
//     // res &= res >> 8;
//     // res &= res >> 4;
//     // res &= res >> 2;
//     // res &= res >> 1;
//     // cpu.eflags.PF = (res & res);
//     cpu.eflags.PF = get_pf(res);

//     print_asm_template2();
// }


make_instr_helper(i2a)
make_instr_helper(i2rm)
make_instr_helper(r2rm)

#include "cpu/exec/template-end.h"